﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Modelo_ETdA.Interface
{
    using Modelo_ETdA.Negocio.Analise;
    using Modelo_ETdA.Negocio.Analise.Formato;
    using Modelo_ETdA.Negocio.Analise.Avaliacao;
    using Modelo_ETdA.Negocio.AmbienteComercial;

    public partial class VerAvaliacaoAnalista : Form
    {
        private GestorAnalise gest_anal;
        private FormatoAvaliacaoAnalista form_anal;
        private DataTable tabela = new DataTable();
        private List<Consideracao> consideracoes;
        private MenuAnaliseETdA menuAnalEtda;
        private List<Divisao> listaZonas;
        private Dictionary<string, Divisao> dicDivs;
        int codAval;
        AmbienteComercial ambC;
        List<Avaliacao> avaliacoes;
        Checklist quest;

        public VerAvaliacaoAnalista(MenuAnaliseETdA menu, GestorAnalise gestor, int cod, AmbienteComercial ambC)
        {
            InitializeComponent();
            menuAnalEtda = menu;
            codAval = cod;
            this.ambC = ambC;
            gest_anal = gestor;
            avaliacoes = gest_anal.consultaAvaliacao(cod, 3);
            quest = (Checklist)avaliacoes[0];
            nome.Text = quest.Doc_cabecalho.Nome;
            valLum.Text = "" + quest.ValLum;
            valRuido.Text = "" + quest.ValRuido;
            valTemp.Text = "" + quest.ValTemp;
            dicDivs = new Dictionary<string, Divisao>();
            inicializaTabela();
            tabelaQuest.Columns[0].Visible = false;
        }

        private void inicializaTabela()
        {
            DataRow workRow;
            tabela.Columns.Add("codCons");
            tabela.Columns.Add("Consideração");
            tabela.Columns["Consideração"].ReadOnly = true;

            string tipo;
            if (ambC.orientadoZona)
                tipo = "Z";
            else
                tipo = "T";
            listaZonas = ambC.listDivisao;

            foreach (Divisao div in listaZonas)
            {

                tabela.Columns.Add(tipo + div.CodRelativo + " - " + div.Descricao);
                dicDivs.Add(tipo + div.CodRelativo + " - " + div.Descricao, div);
            }

            consideracoes = gest_anal.consultaListaConsideracao();
            foreach (Consideracao cons in consideracoes)
            {
                workRow = tabela.NewRow();
                workRow["Consideração"] = cons.Descricao;
                workRow["codCons"] = cons.Cod;
                tabela.Rows.Add(workRow);
            }
            try
            {
                tabelaQuest.DataSource = tabela;
                tabelaQuest.Columns[0].Visible = false;
                tabelaQuest.Rows[0].Height = 0;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }


            preencheTabela();
        }

        public void preencheTabela()
        {
            for (int i = 0; i < consideracoes.Count; i++)
            {
                for (int j = 2; j < listaZonas.Count + 2; j++)
                {
                    {
                        tabelaQuest.Rows[i].Cells[j].Value = quest.Respostas[(listaZonas.Count) * i + j - 2].ValorResposta;
                    }
                }
            }
        }

        private void voltar_Click(object sender, EventArgs e)
        {
            this.Visible = false;
            menuAnalEtda.Visible = true;
        }

        private void VerAvaliacaoAnalista_FormClosing(object sender, FormClosingEventArgs e)
        {
            menuAnalEtda.sair();
        }
    }
}
